package com.ruoyi.ratelimit;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.concurrent.TimeUnit;

@RestController
@RequestMapping("/rate")
public class RateLimitController {

    /**
     * 这个接口被限制为每秒最多处理 2 个请求。
     * 如果请求在500毫秒内无法获取到令牌，则会被限流。
     */
    @GetMapping("/api1")
    @RateLimit(value = 2.0, timeout = 500, timeUnit = TimeUnit.MILLISECONDS)
    public String api1() {
        return "API1 响应成功";
    }

    /**
     * 这个接口被限制为每秒最多处理 5 个请求。
     * 采用非阻塞模式，获取不到令牌立即返回。
     */
    @GetMapping("/api2")
    @RateLimit(value = 5.0) // timeout默认为0，不等待
    public String api2() {
        return "API2 响应成功";
    }
}
